#ifndef ESP01S_MQTT_WEB_HEADERS_H
#define ESP01S_MQTT_WEB_HEADERS_H
// 调整 OTA 缓冲区大小
// 调试开关，设置为 1 开启调试信息输出，设置为 0 关闭
#define DEBUG_ENABLED 1

// 包含标准库头文件
#include <string>
#include <cstdarg>
#include <functional>
#include <memory>

// 包含 ESP8266 相关库头文件
#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>
//#include <WiFiClientSecure.h>
// 包含 JSON 处理库头文件
#include <ArduinoJson.h>  // 确保包含ArduinoJson库的头文件

// 包含 MQTT 客户端库头文件
#include <PubSubClient.h>

// 包含 HTTP 客户端库头文件
#include <ESP8266HTTPClient.h>
#include <LittleFS.h>
// 包含定时器库头文件
#include <Ticker.h>
#include <stdexcept>
#include "utils/RetryManager.h"
#include "config/GlobalConstants.h"

/**
 * @brief 调试日志输出函数，根据 DEBUG_ENABLED 宏决定是否输出调试信息
 * @param format 格式化字符串，类似于 printf 的格式
 * @param ... 可变参数列表
 */

extern void serialPrintln( Printable& str);
std::string parseStringArg(const std::string& arg);
// 解析整数参数
extern int parseIntArg(const std::string& arg);
extern unsigned int parseUnsignedIntArg(const std::string& arg) ;

// 解析无符号长整数参数
extern unsigned long parseUnsignedLongArg(const std::string& arg);
// 解析布尔值参数
extern bool parseBoolArg(const std::string& arg);
extern String getUniqueClientId();
extern void syncTime();
extern BearSSL::WiFiClientSecure  espClient;
extern PubSubClient pubSubClient;
;
//BearSSL::WiFiClientSecure espClient;
//PubSubClient pubSubClient;
// WiFi and MQTT client initialization
#endif // YOUR_PROJECT_NAME_HEADERS_H    